package com.lishem.leftgod.level1.class04;

/**
 * 请把一段纸条竖着放在桌子上，然后从纸条的下边向上方对折1次，压出折痕后展开。
 * 此时折痕是凹下去的，即折痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2次，压出折痕后展开，此时有三条折痕，
 * 从上到下依次是下折痕、下折痕和上折痕。给定一个输入参数N，代表纸条都从下边向上方连续对折N次，
 * <p>
 * 请从上到下打印所有折痕的方向。
 * 例如：N=1时，打印：
 * down
 * N=2时，打印：
 * down
 * down
 * up
 */
public class Code_04_PaperFolding {

    private static void printAllFolder(int n) {
        printAllFolder(1, n, false);
    }

    public static void printAllFolder(int cur, int n, boolean up) {
        if (cur > n) {
            return;
        }
        printAllFolder(cur + 1, n, false);
        System.out.print(up ? "up " : "down ");
        printAllFolder(cur + 1, n, true);

    }

    public static void main(String[] args) {
        int N = 4;
        printAllFolder(N);
    }
}
